package tool.classloader;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

/**rappresenta un ClassLoader in grado di caricare un jar contenente tutte le classi collegate
 * 
 * @author koldar
 * @version 1.0
 */
public class JarClassLoader extends URLClassLoader{
	
	private File jarFile;
	
	public JarClassLoader(File file) throws MalformedURLException, FileNotSupportedException{
		super(new URL[]{file.toURI().toURL()});
		if (!this.isJar(file)){
			throw new FileNotSupportedException(file);
		}
	}
	/**costruisce un classLoader legato con nessun percorso
	 * 
	 */
	public JarClassLoader(){
		super(new URL[]{});
	}
	
	private static boolean isJar(File file){
		return file.getAbsolutePath().endsWith(".jar");
	}
	private static boolean isJar(URL file){
		return file.getFile().endsWith(".jar");
	}
	
	/**aggiunge l'URL passato come parametro se e solo se {@link #jarFile} è NULL e se l'url specifica effettivamente un jar
	 * 
	 */
	public void addURL(URL url){
		if (this.jarFile==null){
			if (this.isJar(url)){
				super.addURL(url);
			}
		}
	}
}
